package br.com.j7.jdesk.persistence.repository;

import java.util.List;

import br.com.j7.jdesk.library.exception.ListenerException;
import br.com.j7.jdesk.library.exception.RepositoryException;
import br.com.j7.jdesk.persistence.entity.Enterprises;
import br.com.j7.jdesk.persistence.entity.Products;

/**
 * Interfaca de {@link Repository}  para a entidade {@link Products}, que implementa a interface {@link Repository}
 * 
 * @author Edivando Alves
 *
 */
public interface ProductRepository extends Repository<Products>{

	/**
	 * Obtem uma entidade {@link Products} apartir do cdCode e da entidade {@link Enterprises}
	 * @param cdCode String
	 * @param enterprise {@link Enterprises}
	 * @return {@link Products}
	 * @throws RepositoryException
	 */
	public Products findByCode(String cdCode, Enterprises enterprise) throws RepositoryException;
	
	/**
	 * Obtem uma {@link List} de {@link Products} a partir da entidade {@link Enterprises}
	 * @param enterprise {@link Enterprises}
	 * @return {@link List} of {@link Products}
	 * @throws RepositoryException
	 */
	public List<Products> listByEnterprise(Enterprises enterprise) throws RepositoryException;
}
